/**
 * Terminal permet d'envoyer un ordre conçu aléatoirement à partir des annuaires (commerçants,actions)
 * et de valeurs aléatoires.
 * Il reçoit et affiche à l'écran un accusé de réception provenant du serveur d'acquisition
 * @author: François Colombel (pour la partie de génération du message), Christopher Rabotin (pour la communication par sockets)
 */
#ifndef TERMINAL_H_
#define TERMINAL_H_
// includes
#include "casual_includes.h"
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "../libbourse/alea.h"
#include "../libcomm/logger.h"
#include "../libcomm/message.h"
#include "../libcomm/communication.h"

/**
 * Permet de démarrer un terminal.
 * Chaque terminal envoie un message aléatoire toutes les deux secondes à son serveur d'acquisition.
 * Le terminal est forké donc cette fonction n'est pas bloquante.
 * @param mdl module lié au serveur terminal
 * @param port port sur lequel le terminal se connecte (toujours en localhost)
 * @return void: le terminal est forké.
 * 
 * <br/><b>Exemple d'utilisation:<b/>
 *<pre> module *term1=init_module("Terminal 01", term, 0);
 launch_terminal(term1, 1201);</pre>
 */
void launch_terminal(module* mdl, const int port);

/**
 * Permet de générer aléatoirement un ordre sous forme de message. L'ordre n'est pas un accusé.
 * @return le message aléatoire généré
 */
msg* gene_msg();

#endif /*TERMINAL_H_*/
